<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // apply()通过函数调用，可以改变调用这个apply方法中的this指向;
        //    参数1: this要改为的那个值;   
        //    参数2: 是一个数组，数组里面放入 函数需要的实参;

        // 1. 体验
        function fn(a, b) {
            console.log(a + b);
            console.log(this);
        }
        // 普通调用 this指向window
        fn(1, 2);
        // call()单个传递参数，apply()数组形式传递参数
        fn.apply(document, [2, 3]);

        // 2. 应用 
        let arr = [1,2,13,4,5]
        // Math.max(): 默认可以求多个参数的最大值; (但是不能求数组的最大值)
        //    利用 apply()传递参数为数组这个特性;
        console.log(Math.max.apply(Math, arr));
        // console.log(Math.max(...arr));
    </script>
</body>

</html>